﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AppPort;
using TI.TI_DruginfoAnalizer;
using Helper.FullTextIndex;
using TI_EntityLib.TiEntityObjects.Clifar;

namespace Controllers.AdministrationControllerCommands
{
    /// <summary>
    /// Первичный поиск (формирование сырых строчек)
    /// </summary>
    public class PopulateRawRows
    {
        public class inPopulateRawRowsItem  
        {            
            public MnnTradeNmDictionaryRecord MnnRecord {get;set; }
            
            //Исходные данные
            public string MNN { get; set; }
            public string TradeNm { get; set; }
            public string Izm { get; set; }
            public string Info { get; set; }
            public string Count { get; set; }
            public string Price { get; set; }
            public string NodeType { get; set; }
            
            public string MNNInfo { get {
                return MNN + " " + TradeNm + " " + Info;  
            } }
        }
        public class inPopulateRawRows
        {
            public List<inPopulateRawRowsItem> RawRows { get; set; }
        }

        private static DrugInfoAnalizer _analizer = null;

        private static DrugInfoAnalizer Analizer { get { 
            if(null==_analizer)
                _analizer =new DrugInfoAnalizer ();
            return _analizer ;
        } }
        
        
        public static string Run(ServiceCmd cmd)
        {   
            inPopulateRawRows inP = Helper.Json<inPopulateRawRows>.NewtonDeserializeObject(cmd.args.ToString());            

            //пробегаемся пытаемся определить данные справочника
            foreach (inPopulateRawRowsItem i in inP.RawRows)
            {
                //Если что то как то определенно проваливаемся дальше
                if (i.MnnRecord!=null)
                                continue;

                //Первично определяемся по торговому наименованию
                IFullindexObject r = Analizer.SearchApplicatian(i.TradeNm);

                //не удолось смотрим по МНН
                if (null == r)
                    r= Analizer.SearchApplicatian(i.MNNInfo);
                
                //нет результат идем дальше
                if (null == r)
                        continue;

               DrugInfoAnalizer.DrugInfoDataItem itm=  Analizer.FullindexItemToTextItem(r);
           //  i.DrugItemID = itm.ID;
           //  i.DrugItemValueInfo = itm.ValueInfo;
             //i.NodeType=((DrugTreeItem)itm.Owner).NodeType;  
               i.MnnRecord = (MnnTradeNmDictionaryRecord)itm.Owner;  
            }

            string s = Helper.Json<List<inPopulateRawRowsItem>>.NewtonSerializeObject(inP.RawRows);
            return "{success:true,d:" + s + "}";
        }
    }
}
